package com.iluwatar;

/**
 * 
 * Visitor pattern defines mechanism to apply operations
 * (UnitVisitor) on nodes (Unit) in hierarchy. New operations 
 * can be added without altering the node interface.
 *
 */
public class App 
{
    public static void main( String[] args )
    {

    	Commander commander = new Commander(
    			new Sergeant(new Soldier(), new Soldier(), new Soldier()), 
    			new Sergeant(new Soldier(), new Soldier(), new Soldier()));
    	commander.accept(new SoldierVisitor());
    	commander.accept(new SergeantVisitor());
    	commander.accept(new CommanderVisitor());
    	
    }
}
